<?php

require_once 'Banco.php';
require_once 'DAOEndereco.php';
require_once 'DAOBairro.php';
require_once 'DAOCidade.php';
require_once 'DAOEstado.php';
require_once 'DAOPais.php';
require_once 'DAO/DAOCategoriaEmpresa.php';
require_once 'Model/Empresa.php';

class DAOEmpresa extends Banco{
    function DAOEmpresa(){
        
    }
    
    function  getEmpresas($limite=0,$quantos=0){
        $empresas = array();
        Banco::Conecta();
        $banco = Banco::getBanco();
        if($limite==0 && $quantos==0){
            $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS");
        }else{
            if($quantos==0){
                $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS ORDER BY RAND() LIMIT ".addslashes($limite));
            }else{
                $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS LIMIT $limite , $quantos;");
            }
        }
        if(!empty($query)){
            while($emp = $query->fetch_assoc()){
                $empresa = new Empresa();
                $db = new DAOBairro();
                $dc = new DAOCidade();
                $de = new DAOEndereco();
                $dp = new DAOPais();
                
                $empresa->setCodigo($emp['EMP_CODIGO']);
                $empresa->setNome($emp['EMP_NOME']);
                $empresa->setCnpj($emp['EMP_CNPJ']);
                $empresa->setEndereco($emp['EMP_CODENDERECO']);
                $empresa->setNumero($emp['EMP_NUMERO']);
                $empresa->setBairro($emp['EMP_CODBAIRRO']);
                $empresa->setCidade($emp['EMP_CODCIDADE']);
                $empresa->setDataRegistro($emp['EMP_DATA_REGISTRO']);
                $empresa->setEmail($emp['EMP_EMAIL']);
                $empresa->setSenha($emp['EMP_SENHA']);
                
                $empresas[] = (object)$empresa;
            }
        }else{
            
        }
        return $empresas;
    }
    
    function  getEmpresasByCidade($cidade, $limite=0, $quantos=0){
        $empresas = array();
        Banco::Conecta();
        $banco = Banco::getBanco();
        if($limite==0 && $quantos==0){
            $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS WHERE EMP_CODCIDADE=$cidade");
        }else{
            if($quantos==0){
                $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS WHERE EMP_CODCIDADE=$cidade ORDER BY RAND() LIMIT ".addslashes($limite));
            }else{
                $query = $banco->query("SELECT * FROM V_EMPRESASATIVAS WHERE EMP_CODCIDADE=$cidade LIMIT $limite , $quantos ;");
            }
        }
        if(!empty($query)){
            while($emp = $query->fetch_assoc()){
                $empresa = new Empresa();
                $db = new DAOBairro();
                $dc = new DAOCidade();
                $de = new DAOEndereco();
                $dp = new DAOPais();
                
                $empresa->setCodigo($emp['EMP_CODIGO']);
                $empresa->setNome($emp['EMP_NOME']);
                $empresa->setCnpj($emp['EMP_CNPJ']);
                $empresa->setEndereco($emp['EMP_CODENDERECO']);
                $empresa->setNumero($emp['EMP_NUMERO']);
                $empresa->setBairro($emp['EMP_CODBAIRRO']);
                $empresa->setCidade($emp['EMP_CODCIDADE']);
                $empresa->setDataRegistro($emp['EMP_DATA_REGISTRO']);
                $empresa->setEmail($emp['EMP_EMAIL']);
                $empresa->setSenha($emp['EMP_SENHA']);
                
                $empresas[] = (object)$empresa;
            }
        }else{
            
        }
        return $empresas;
    }
    
    function getEmpresa($id){
        $empresa = NULL;
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT EMP_CODIGO, EMP_NOME, EMP_CNPJ, EMP_CODENDERECO, EMP_NUMERO, EMP_CODBAIRRO, EMP_CODCIDADE, EMP_DATA_REGISTRO, EMP_EMAIL, EMP_SENHA FROM TB_EMPRESA WHERE EMP_CODIGO = ?")) {
            $sql->bind_param('i',$id);
            $sql->execute();
            $sql->bind_result($codigo, $nome, $cnpj, $endereco, $numero, $bairro, $cidade, $dataRegistro, $email, $senha);
            while ($sql->fetch()) {
                $empresa = new Empresa();
                $de = new DAOEndereco();
                $db = new DAOBairro();
                $dc = new DAOCidade();
                
                $empresa->setCodigo($codigo);
                $empresa->setNome($nome);
                $empresa->setCnpj($cnpj);
                $empresa->setEndereco($de->getEndereco($endereco));
                $empresa->setNumero($numero);
                $empresa->setBairro($db->getBairro($bairro));
                $empresa->setCidade($dc->getCidade($cidade));
                $empresa->setDataRegistro($dataRegistro);
                $empresa->setEmail($email);
                $empresa->setSenha($senha);
            }
        }
        return $empresa;
    }
    function getEmpresasUniversitarias($limite=4) {
        $empresas = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT EMP_CODIGO, EMP_NOME, EMP_CNPJ, EMP_CODENDERECO, EMP_NUMERO, EMP_CODBAIRRO, EMP_CODCIDADE, EMP_DATA_REGISTRO, EMP_EMAIL, EMP_SENHA FROM TB_EMPRESA, TB_CATEGORIAEMPRESA, TB_CATEGORIAS WHERE EMP_CODIGO=CAS_CODEMPRESA AND CAS_CODCATEGORIA=CEM_CODIGO AND CEM_AREA=4 ORDER BY RAND() LIMIT $limite;")) {
            //$sql->bind_param('i',$id);
            $sql->execute();
            $sql->bind_result($codigo, $nome, $cnpj, $endereco, $numero, $bairro, $cidade, $dataRegistro, $email, $senha);
            while ($sql->fetch()) {
                $empresa = new Empresa();
                $de = new DAOEndereco();
                $db = new DAOBairro();
                $dc = new DAOCidade();
                $empresa->setCodigo($codigo);
                $empresa->setNome($nome);
                $empresa->setCnpj($cnpj);
                $empresa->setEndereco($de->getEndereco($endereco));
                $empresa->setNumero($numero);
                $empresa->setBairro($db->getBairro($bairro));
                $empresa->setCidade($dc->getCidade($cidade));
                $empresa->setDataRegistro($dataRegistro);
                $empresa->setEmail($email);
                $empresa->setSenha($senha);
                $empresas[] = (object)$empresa;
            }
        }
        return $empresas;
    }
    function getEmpresaByLogin($login, $senha){
//        $lista = Banco::sql_query("SELECT * FROM tb_usuario WHERE usu_email = '$login' AND usu_senha='$senha'");
        $empresa = null;
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT EMP_CODIGO, EMP_NOME, EMP_CNPJ, EMP_CODENDERECO, EMP_NUMERO, EMP_CODBAIRRO, EMP_CODCIDADE, EMP_DATA_REGISTRO, EMP_EMAIL, EMP_SENHA FROM TB_EMPRESA WHERE EMP_EMAIL = ? AND EMP_SENHA = ?")) {
            $sql->bind_param('ss',$login,$senha);
            $sql->execute();
            $sql->bind_result($codigo, $nome, $cnpj, $endereco, $numero, $bairro, $cidade, $dataRegistro, $email, $senha);
            //echo $codigo . "TESTE";
            while ($sql->fetch()) {
                $empresa = new Empresa();
                $de = new DAOEndereco();
                $db = new DAOBairro();
                $dc = new DAOCidade();
                
                $empresa->setCodigo($codigo);
                $empresa->setNome($nome);
                $empresa->setCnpj($cnpj);
                $empresa->setEndereco($de->getEndereco($endereco));
                $empresa->setNumero($numero);
                $empresa->setBairro($db->getBairro($bairro));
                $empresa->setCidade($dc->getCidade($cidade));
                $empresa->setDataRegistro($dataRegistro);
                $empresa->setEmail($email);
                $empresa->setSenha($senha);
            }
        }else{
            return null;
        }
        
        if(!is_a($empresa, 'Empresa')){
            return null;
        }
        return (object)$empresa;
    }
    
    function addEmpresa(Empresa $empresa){
        $lastId = -1;
        Banco::conecta();
        $banco = Banco::getBanco();
        if(!is_a($empresa->getCidade(), "Cidade")){
            $cidade=NULL;
        }else{
            $cidade = $empresa->getCidade()->getCodigo();
        }
        if(!is_a($empresa->getBairro(), "Bairro")){
            $bairro = NULL;
        }else{
            $bairro = $empresa->getBairro()->getCodigo();
        }
        if(!is_a($empresa->getEndereco(), "Endereco")){
            $endereco=NULL;
        }else{
            $endereco = $empresa->getEndereco()->getCodigo();
        }
        
        $nome=$empresa->getNome();
        $cnpj=$empresa->getCnpj();
        $numero=$empresa->getNumero();
        $email=$empresa->getEmail();
        $senha=$empresa->getSenha();
        
        if($sql = $banco->prepare("INSERT INTO TB_EMPRESA VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, NOW(), ?, ?);")){
            $sql->bind_param('ssisiiss',$nome,$cnpj,$endereco,$numero,$bairro,$cidade,$email,$senha);
            $sql->execute();
            $lastId = $sql->insert_id;
            $sql->close();   
        }
        return $lastId;
    }
    
    function updateEmpresa(Empresa $usuario){
        Banco::conecta();
        $banco = Banco::getBanco();
        $codigo = $usuario->getCodigo();
        if(!is_a($usuario->getCidade(), 'Cidade')){
            $cidade = NULL;
        }else{
            $cidade = $usuario->getCidade()->getCodigo();
        }
        if(!is_a($usuario->getBairro(),'Bairro')){
            $bairro = NULL;
        }else{
            $bairro = $usuario->getBairro()->getCodigo();
        }
        if(!is_a($usuario->getEndereco(), 'Endereco')){
            $endereco = NULL;
        }else{
            $endereco = $usuario->getEndereco()->getCodigo();
        }
        $nome=$usuario->getNome();
        $cnpj=$usuario->getCnpj();
        $numero=$usuario->getNumero();
        $email=$usuario->getEmail();
        $senha=$usuario->getSenha();
        
        if ($sql = $banco->prepare("UPDATE TB_EMPRESA SET EMP_NOME = ?, EMP_CNPJ = ?, EMP_CODENDERECO = ?, EMP_NUMERO = ?, EMP_CODBAIRRO = ?, EMP_CODCIDADE = ?, EMP_EMAIL = ?, EMP_SENHA = ? WHERE EMP_CODIGO = ?")) {
            $sql->bind_param('ssisiissi',$nome, $cnpj, $endereco, $numero, $bairro, $cidade, $email, $senha, $codigo);
            $sql->execute();
            echo $sql->error;
            $sql->close();
        }
        echo $banco->error;
        return $usuario;
    }
}

?>
